package com.zhq.service;

import com.zhq.bean.Courier;
import com.zhq.bean.Express;
import com.zhq.dao.BaseCourierDao;
import com.zhq.dao.imp.CourierDaoMysql;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * @Author:钟豪强
 * @Description:
 * @Date Created in  2020-08-17 15:29
 * @Modified By:
 */
public class CourierService {
    private static BaseCourierDao dao = new CourierDaoMysql();
    /**
     * 用于查询数据库中快递员的数量(总数和新增)
     *
     * @return {size:总数,day:新增}
     */
    public static Map<String, Integer> console() {
        return dao.console();
    }

    /**
     * 用于查询所有快递员信息
     *
     * @param limit      0代表分页(默认),1代表不分页
     * @param offset     表示SQL语句起始索引
     * @param pageNumber
     * @return
     */
    public static List<Courier> findAll(boolean limit, int offset, int pageNumber) {
        return dao.findAll(limit, offset, pageNumber);
    }

    /**
     * 根据快递员手机号码查找快递员信息
     * @param userPhone 快递员手机号码
     * @return 快递员信息
     */
    public static Courier findByUserPhone(String userPhone) {
        return dao.findByUserPhone(userPhone);
    }

    /**
     * 根据快递员姓名查找快递员信息
     * @param username 快递员姓名
     * @return 快递员信息
     */
    public static Courier findByUserName(String username){
        return dao.findByUserName(username);
    }

    /**
     * 用于添加快递员信息
     *
     * @param username   快递员姓名
     * @param userPhone  快递员手机号
     * @param userNumber 快递员身份证
     * @param password   密码
     * @return true代表添加成功
     */
    public static boolean insert(String username, String userPhone, String userNumber, String password) {
        return dao.insert(username, userPhone, userNumber, password);
    }

    /**
     * 用于根据id修改快递员的派件总数
     *
     * @param id            快递员id
     * @param expressNumber 快递员派件个数
     * @return true代表修改成功
     */
    public static boolean updateExpressNumber(int id, int expressNumber) {
        return dao.updateExpressNumber(id, expressNumber);
    }

    /**
     * 用于根据id,修改快递员信息
     * @param id   用户id
     * @param lastLoginTime   快递员上次在线时间
     * @return  返回true代表修改成功
     */
    public static boolean updateLastLoginTime(int id, Timestamp lastLoginTime){
        return dao.updateLastLoginTime(id, lastLoginTime);
    }

    /**
     * 用于根据id,修改快递员信息
     *
     * @param id         用户id
     * @param newCourier 新的快递员信息
     * @return 返回true代表修改成功
     */
    public static boolean update(int id, Courier newCourier) {
        boolean update = dao.update(id, newCourier);
        //改快递的sysPhone
        List<Express> list = ExpressService.findBySysPhone(newCourier.getG_userPhone());
        System.out.println(list);
        List<Boolean> list1 = new ArrayList<>();
        list1.add(update);
        for (Express e:list) {
            boolean update1 = ExpressService.updateSysPhone(e.getId(), newCourier.getUserPhone());
            list1.add(update1);
        }
        if (list1.size() == list.size() + 1){
            return true;
        }
        return false;
    }

    /**
     * 用于根据id,删除快递员信息
     *
     * @param id 快递员id
     * @return true代表修改成功
     */
    public static boolean delete(int id) {
        return dao.delete(id);
    }

    /**
     * 快递员登录
     * @param username   快递员姓名
     * @param password   密码
     * @return  返回true代表登录成功
     */
    public static boolean login(String username, String password){
        return dao.login(username, password);
    }
}
